

/****** Object:  StoredProcedure [dbo].[Operation_R]    Script Date: 07/27/2012 23:22:41 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================  
-- Author:  juan ruacho  
-- Create date: 06/07/2012  
-- Description: Obtener listado de operaciones
-- =============================================  
create PROCEDURE [dbo].[Operation_R] 
@Proyect NVARCHAR(200),
@Resource NVARCHAR(200),
@DateStart VARCHAR(20),
@DateEnd VARCHAR(20),
@Order NVARCHAR(50),
@Direction NVARCHAR(5),
@Start INT ,@Limit INT

AS

BEGIN

SET NOCOUNT ON;

with Proyect as(
	SELECT  ROW_NUMBER() OVER 
			(
			  ORDER BY 
				CASE WHEN (@Order = 'Id' OR @Order IS NULL ) AND @Direction = 'ASC' THEN P.id END ASC,
				CASE WHEN @Order = 'Proyecto' AND @Direction = 'ASC' THEN  P.nombre END ASC,  
				CASE WHEN @Order = 'FechaInico' AND @Direction = 'ASC' THEN  P.fechaInicio 
					 WHEN @Order = 'FechaFin' AND @Direction = 'ASC' THEN  P.fechaFin END ASC,
	                 
				CASE WHEN (@Order = 'Id' OR @Order IS NULL) AND @Direction = 'DESC' THEN P.id END DESC,
				CASE WHEN @Order = 'Proyecto' AND @Direction = 'DESC' THEN  P.nombre END DESC,  
				CASE WHEN @Order = 'FechaInico' AND @Direction = 'DESC' THEN  P.fechaInicio 
					 WHEN @Order = 'FechaFin' AND @Direction = 'DESC' THEN  P.fechaFin END DESC   
	                 
			) AS RowNum,
			P.id,
			P.nombre proyecto,
			P.fechaInicio,			
			P.fechaFin,
			P.horas,
			(SELECT SUM(DATEDIFF(dd,fechaInicio,fechaFinal) * 8 ) FROM dbo.LineaTiempo  WHERE proyectoId = P.id  )   horasAsignadas						
    FROM dbo.LineaTiempo LT						  
	INNER JOIN dbo.Proyecto P ON LT.proyectoId = P.id
	INNER JOIN dbo.Recurso R ON LT.recursoId = R.id
	WHERE (P.nombre LIKE '%'+@Proyect+ '%' OR @Proyect = '' ) AND
       ( (R.nombre+' '+R.apellidoPaterno+' '+ R.apellidoMaterno) LIKE '%'+@Resource+ '%' OR @Resource = '')  AND
        (DATEADD(DD,0,DATEDIFF(DD,0,P.fechaInicio)) >= DATEADD(DD,0,DATEDIFF(DD,0,@DateStart)) OR @DateStart = '' ) AND
        (DATEADD(DD,0,DATEDIFF(DD,0,P.fechaFin)) <= DATEADD(DD,0,DATEDIFF(DD,0,@DateEnd)) OR @DateEnd = '' )
    GROUP BY  P.id,
			  P.nombre,
			  P.fechaInicio,			
			  P.fechaFin,
			  P.horas
			)
			
			select RowNum, id, proyecto,fechaInicio,fechaFin,horas,horasAsignadas INTO #Proyecto from Proyect



	SELECT COUNT(id) AS ToltalReg FROM #Proyecto
        
	SELECT 
	 id,
	 proyecto,
	 fechaInicio,			
	 fechaFin,
	 horas,
	 horasAsignadas 
	FROM #Proyecto
	WHERE    RowNum BETWEEN @Start +1 AND (@Start + @Limit)

	DROP TABLE #Proyecto

END
GO


